﻿using System;
using System.IO;
using System.Linq;
using System.Text;

namespace Homework3_1
{
    internal class Program
    {
        /// <summary>
        /// 随机生成10000个学生的3个字母英文名字，其中首字母大写，再随机生成10000个学生的年龄，范围是20到60，再随机生成10000个学生的身高以及性别，最后将这一组关于学生的数据存入一个文件中
        /// </summary>
        //定义随机数生成器
        static Random random = new Random();

        static void Main(string[] args)
        {
            //定义常量和数组
            const int numberOfStudents = 10000;
            char[] firstLetters = "ABCDEFGHIJKLMNOPQRSTUVWXYZ".ToCharArray();
            char[] secondAndThirdLetters = "abcdefghijklmnopqrstuvwxyz".ToCharArray();
            string[] genders = { "Male", "Female" };

            //随机生成10000个学生的数据，并且把数据存入特定的位置
            using (StreamWriter writer = new StreamWriter("D:\\CSharp2024\\students_data.txt"))
            {
                for (int i = 0; i < numberOfStudents; i++)
                {
                    // 生成随机姓名
                    string firstName = GenerateRandomName(firstLetters, secondAndThirdLetters);

                    // 生成随机年龄
                    int age = random.Next(20, 61);

                    // 生成随机身高
                    double height = random.NextDouble() * (2.0 - 1.5) + 1.5; // 身高范围1.5米到2.0米

                    // 生成随机性别
                    string gender = genders[random.Next(genders.Length)];

                    // 写入文件
                    writer.WriteLine($"{firstName},{age},{height:F2},{gender}");
                }
            }

            //输出结果
            Console.WriteLine("学生数据已生成并保存到 D:\\CSharp2024\\students_data.txt 文件中。");
        }

        //构造一个生成学生名字的函数
        static string GenerateRandomName(char[] firstLetters, char[] secondAndThirdLetters)
        {
            char firstChar = firstLetters[random.Next(firstLetters.Length)];
            char secondChar = secondAndThirdLetters[random.Next(secondAndThirdLetters.Length)];
            char thirdChar = secondAndThirdLetters[random.Next(secondAndThirdLetters.Length)];

            return $"{firstChar}{secondChar}{thirdChar}";
        }
    }
}
